package com.changanw.code04;

import java.util.Arrays;

/**
 * @author changanw
 * @version ncc1.0
 * @description TODO   第四题求两个数组的中位数
 * @date 2023/6/19 16:25
 */
public class code04 {
  public double findMedianSortedArrays(int[] nums1, int[] nums2) {
    double result = Double.parseDouble("0");
    int m = nums1.length;
    int n = nums2.length;
    int a = (m+n) % 2;
    //新数组的长度
    int[] newArray = new int[m+n];
    int pos = 0;
    //将老数组的值，赋给新数组
    for (int n1 : nums1) {
      newArray[pos] = n1;
      pos++;
    }
    for (int n2 : nums2) {
      newArray[pos] = n2;
      pos++;
    }
    //对新数组进行一个排序
    Arrays.sort(newArray);
    //判断余数是不是0，如果是0就取新数组长度并对2取商，以及商值-1 ，这两个值就是新数组中间值的索引，然后
    //求平均数
    //如果余数不是0，直接取新数组（长度值+1）/2 - 1，改值就是中位数在新数组中的索引
    if(a == 0){
      int temp = newArray.length /2;
      int temp1 = temp - 1;
      result = (double) (newArray[temp] + newArray[temp1]) /2;
    }else {
      int temp = (newArray.length + 1) /2 -1;
      result = newArray[temp];
    }
    return result;
  }

  public static void main(String[] args) {
    code04 code04 = new code04();
    //1 1 2 3 3 4 4 5 6 7 8 9 9
    int a[] = {1,3,4,9};
    int b[] = {1,2,3,4,5,6,7,8,9};
    double medianSortedArrays = code04.findMedianSortedArrays(a, b);
    System.out.println(medianSortedArrays);
  }
}
